package com.pandy.code;

/**
 * @description: 桶排序（计数排序）
 * @author: panhong
 * @date: 2025/3/26
 */
public class Code09_CountSort {

    /**
     * 员工年龄排序 最大年龄80
     * @param arr
     */
    public static void countSort(int[] arr) {
        if(arr == null || arr.length < 2) {
            return;
        }

        // 使用一个数组，将对应的数据放到对应的索引下
        int[] helpArr = new int[80];
        for(int i=0;i<arr.length;i++) {
            int age = arr[i];
            helpArr[age-1]++;
        }

        int index = 0;
        for (int i = 0; i < helpArr.length; i++) {
            int count = helpArr[i];
            if(count > 0) {
                for (int j = 0; j < count; j++) {
                    arr[index++] = i+1;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {34,18,21,46,33,59,21,21};
        CommonUtil.print(arr);
        countSort(arr);
        CommonUtil.print(arr);
    }
}
